home *** CD-ROM | disk | FTP | other *** search
- global gPlayer, gpPickupList, gpCollisionList, gpFeedbackSprite
-
- on pickup_Init collisionList
- gpCollisionList = collisionList.duplicate()
- gpPickupList = []
- gpFeedbackSprite = 416
- repeat with n = 300 to 350
- sprite(n).puppet = 0
- end repeat
- sprite(gpFeedbackSprite).puppet = 0
- end
-
- on pickup_ClearAllPickups
- repeat with n = 300 to 350
- sprite(n).puppet = 0
- end repeat
- sprite(gpFeedbackSprite).puppet = 0
- end
-
- on pickup_Add theType, theLoc, regenTime, visFX
- if voidp(visFX) then
- visFX = pickup_getVisFX(theType)
- end if
- theSpriteNum = pickup_findASprite(300, 350)
- if theSpriteNum <> 0 then
- sprite(theSpriteNum).puppet = 1
- sprite(theSpriteNum).ink = 36
- sprite(theSpriteNum).member = member(pickup_getMemberName(theType))
- sprite(theSpriteNum).width = sprite(theSpriteNum).member.width
- sprite(theSpriteNum).height = sprite(theSpriteNum).member.height
- add(gpPickupList, [theType, theSpriteNum, theLoc, regenTime, 1, 0, visFX, 2])
- end if
- end
-
- on pickup_Update theOffset
- repeat with n = 1 to count(gpPickupList)
- if gpPickupList[n][5] then
- sprite(gpPickupList[n][2]).loc = gpPickupList[n][3] - theOffset
- pickup_updateVisFX(n)
- pickup_collisionCheck(n)
- next repeat
- end if
- if the ticks > gpPickupList[n][6] then
- sprite(gpPickupList[n][2]).blend = 100
- sprite(gpPickupList[n][2]).loc = gpPickupList[n][3] - theOffset
- gpPickupList[n][5] = 1
- end if
- end repeat
- if sprite(gpFeedbackSprite).puppet then
- if sprite(gpFeedbackSprite).playing = 0 then
- sprite(gpFeedbackSprite).puppet = 0
- end if
- end if
- end
-
- on pickup_findASprite minRange, maxRange
- theSpriteNum = 0
- repeat with n = minRange to maxRange
- if sprite(n).puppet = 0 then
- theSpriteNum = n
- exit repeat
- end if
- end repeat
- return theSpriteNum
- end
-
- on pickup_getMemberName pickupType
- case pickupType of
- #nitro:
- return "Nitro"
- end case
- end
-
- on pickup_collisionCheck thePickupNum
- repeat with n = 1 to count(gpCollisionList)
- if sprite gpPickupList[thePickupNum][2] intersects sprite(gpCollisionList[n]) then
- gpPickupList[thePickupNum][5] = 0
- gpPickupList[thePickupNum][6] = the ticks + gpPickupList[thePickupNum][4]
- sprite(gpPickupList[thePickupNum][2]).blend = 0
- if gpCollisionList[n] = gPlayer.pMySpriteNum then
- gPlayer.pickupObject(gpPickupList[thePickupNum][1])
- sprite(gpFeedbackSprite).puppet = 1
- sprite(gpFeedbackSprite).member = member("flNitro")
- sprite(gpFeedbackSprite).ink = 36
- sprite(gpFeedbackSprite).loc = point(300, 275)
- updateStage()
- end if
- end if
- end repeat
- end
-
- on pickup_getVisFX pickupType
- case pickupType of
- #nitro:
- return #pulsate
- end case
- end
-
- on pickup_updateVisFX thePickupNum
- if ilk(gpPickupList[thePickupNum][7], #list) then
- repeat with n = 1 to count(gpPickupList[thePickupNum][7])
- pickup_updateEffect(thePickupNum, gpPickupList[thePickupNum][7][n])
- end repeat
- else
- pickup_updateEffect(thePickupNum, gpPickupList[thePickupNum][7])
- end if
- end
-
- on pickup_updateEffect thePickupNum, visFXType
- case visFXType of
- #rotate:
- sprite(gpPickupList[thePickupNum][2]).rotation = sprite(gpPickupList[thePickupNum][2]).rotation + 5
- if sprite(gpPickupList[thePickupNum][2]).rotation > 360 then
- sprite(gpPickupList[thePickupNum][2]).rotation = sprite(gpPickupList[thePickupNum][2]).rotation - 360
- end if
- #pulsate:
- sprite(gpPickupList[thePickupNum][2]).width = sprite(gpPickupList[thePickupNum][2]).width + gpPickupList[thePickupNum][8]
- sprite(gpPickupList[thePickupNum][2]).height = sprite(gpPickupList[thePickupNum][2]).height + gpPickupList[thePickupNum][8]
- if sprite(gpPickupList[thePickupNum][2]).width > (sprite(gpPickupList[thePickupNum][2]).member.width + 10) then
- gpPickupList[thePickupNum][8] = gpPickupList[thePickupNum][8] * -1
- else
- if sprite(gpPickupList[thePickupNum][2]).width < (sprite(gpPickupList[thePickupNum][2]).member.width - 10) then
- gpPickupList[thePickupNum][8] = gpPickupList[thePickupNum][8] * -1
- end if
- end if
- end case
- end
-